<?php
//博文控制器
namespace admin\controller;

use \core\Controller;

class ArticleController extends Controller{
    //新曾博文管理
    public function add(){
        //表单中要显示所有分类 判断是否有没有这个分类
        if (!isset($_SESSION['categories'])){
            //获取数据库信息
            $c= new \admin\model\CategoryModel();
            $categories=$c->getAllCategories();
            //在拿到数据的时候保存到session 无限极分类比较咱计算机内存支援
            $_SESSION['categories']=$categories;
        }
        //显示表单
        $this->display('articleAdd.html');
    }
    //新增博文入库
    public function insert(){
        //接收数据
        $data=$_POST;
        //验证数据的合法性
        if (empty($data['a_title'])||empty(trim($data['a_content']))){
            $this->error('<script>alert("当前数据不能为空")</script>','add');
        }
        if (!array_key_exists($data['c_id'],$_SESSION['categories'])){
            $this->error('<script>alert("当前判定不合理")</script>','add');
        }
        //补充数据
        $data['u_id']=$_SESSION['user']['id'];
        $data['a_author']=$_SESSION['user']['u_username'];
        $data['a_time']=time();
        //理论上讲我们上传文件我们应该上制作缩洛图
        if($a_img=\vendor\Uploder::uploadOne($_FILES['a_img'],UPLOAD_PATH)){
                //有文件上传
            $data['a_img']=$a_img;
            //成功制作缩落图
            $a_img_thumb=\vendor\image::makeThumb(UPLOAD_PATH.$a_img,UPLOAD_PATH);
            if ($a_img_thumb) $data['$a_img_thumb']=$a_img_thumb;

        }

        //入库
        $a= new \admin\model\ArticleModel();
        if ($a->autoInsert($data)){
            //确定文件是否上传成功
            if (!$a_img) $this->success('博文:'.$data['a_title'].'新增成功!但是图片上传失败!失败原因'.\vendor\Uploder::$error,'index');

            //缩落图可能出错
            if (  $a_img && !$a_img_thumb ) $this->success('博文:'.$data['a_title'].'新增成功!但是缩略图制作失败!失败原因'.\vendor\image::$error,'index');
            //成功
            $this->success('<script>alert("添加成功")</script>','index');
//            $this->success('博文添'.$data['a_title'].'加成功','index');
        }else{
            //失败可能干掉的图片
            @unlink(UPLOAD_PATH.$a_img);
            $this->error('<script>alert("博文添加失败")</script>','add');
        }
    }



    //增加博文列表
    public function index(){
        //接收可能存在的页码
        $page = $_REQUEST['page'] ?? 1;

        //获取分页数据：每页显示量
        global $config;
        $pagecount = $config['admin']['article_pagecount'] ?? 5;


        //接收可能存在的条件
        $cond=array();
        if(isset($_REQUEST['a_title']) && !empty(trim($_REQUEST['a_title']))) $cond['a_title'] = trim($_REQUEST['a_title']);
        if(isset($_REQUEST['c_id']) && $_REQUEST['c_id'] != 0) $cond['c_id'] = (int)$_REQUEST['c_id'];
        if(isset($_REQUEST['a_status']) && $_REQUEST['a_status'] != 0) $cond['a_status'] = (int)$_REQUEST['a_status'];
        if(isset($_REQUEST['a_toped']) && $_REQUEST['a_toped'] != 0) $cond['a_toped'] = (int)$_REQUEST['a_toped'];

        //添加普通用户条件
        if (!$_SESSION['user']['u_is_admin']) $cond['u_id']=$_SESSION['user']['id'];
//        获取分类信息
        if (!isset($_SESSION['categories'])){
            //获取数据库信息
            $c= new \admin\model\CategoryModel();
            $categories=$c->getAllCategories();

            //在拿到数据的时候保存到session 无限极分类比较咱计算机内存支援
            $_SESSION['categories']=$categories;
        }
        //使用模板获取数据
        $a= new \admin\model\ArticleModel();
        $articles=$a->getArticleInfo($cond);
//曼珠调价记录总数
        $counts = $a->getSearchCounts($cond,$pagecount,$page);
        //调用分页数让他来产生分页数据

        $cond['a']=A;
        $cond['c']=C;
        $cond['p']=P;
        $pagestr = \vendor\Page::clickPage(URL . 'index.php',$counts,$pagecount,$page,$cond);

        //显示模板
        $this->assign('pagestr',$pagestr);
        $this->assign('cond',$cond);
        $this->assign('articles',$articles);
        $this->display('articleIndex.html');
    }
    //删除博文
    public function delete(){
        //接收数据
        $id=(int)$_GET['id'];
        //删除数据
        $a= new \admin\model\ArticleModel();
        if ($a->deleteById($id)){
            $this->success('删除成功','index');
        }else{
            $this->error('删除失败','index');
        }

    }
    //编辑文章显示数据
    public function edit(){
        //接收数据
        $id=(int)$_GET['id'];
        //接收博文信息
        $a=new \admin\model\ArticleModel();
        $article=$a->getById($id);

        if (!$article) $this->error('当前要编辑的文章不存在!','index');
//        获取分类信息
        if (!isset($_SESSION['categories'])){
            //获取数据库信息
            $c= new \admin\model\CategoryModel();
            $categories=$c->getAllCategories();
            //在拿到数据的时候保存到session 无限极分类比较咱计算机内存支援
            $_SESSION['categories']=$categories;
        }
        //显示数据
        $this->assign('article',$article);
        $this->display('articleEdit.html');
    }
    //新曾 博文入库
    public function update(){
        $id=(int)$_POST['id'];
        $data['a_title']=trim($_POST['a_title']);
        $data['c_id']=(int)$_POST['c_id'];
        $data['a_status']=(int)$_POST['a_status'];
        $data['a_toped']=(int)$_POST['a_toped'];
        $data['a_content']=(int)$_POST['a_content'];
        //合法性验证
        if (!empty($data['a_title'])){
            $this->back('博文页面不能为空');
        }
        //获取当前id的信息
        $a=new \admin\model\ArticleModel();
        $article=$a->getById($id);
        //数据库剔除
        $data=array_diff_assoc($data,$article);

        //判定
        if (empty($data)){
            $this->back('数据库没有更新','index');
        }
        //更新内容应该进行更新
        if ($a->autoUpdate($id,$data)){
            $this->success('更新成功','index');
        }else{
            $this->error('更新失败','index');
        }
    }
}
